1. Field of the Invention
The present invention generally relates to data processing systems using graphical input devices and displayed cursors as part of the user interface and, more particularly, to the interaction of cursors and the data processing system and applications running thereon for data input from a graphical input device.
2. Description of the Prior Art
Graphical input devices such as a mouse, light pen, track ball and data glove are familiar to users of data processing systems. Providing for movement of a displayed cursor to follow movements of such graphic input devices is also well-understood in the art. Graphic input devices are also provided with a selection input, such as a button which can be actuated to perform a predetermined function in accordance with an application program and the position specified by the graphic input device. Different types of actuation (e.g. click, double click, press and hold, etc., collectively referred to as "events") may be differentially detected to perform different functions. These features allow for selection, dragging, menu manipulation, graphical drawing and many other operations to be performed at high speed and with great efficiency of user interaction.
In general, movement of a graphic input device causes generation of a signal, usually in the form of a pulse train which is input to a counter or register which maintains the current cursor position. For simplification of the displayed image, particularly in multi-tasking environments where many different cursors may be provided, cursor images may be toggled on and off by different operator actions as may be provided in respective applications which may be run on the data processing system. For example, display of the cursor image may be initiated by movement of a particular graphic input device corresponding to the cursor and terminated by any other input, such as a keystroke on a keyboard.
However, display generation is a computationally intensive process and data processing systems operate at a finite speed. Usually, display generation must be done using the same processor (e.g. CPU) on which one or more applications are currently running and the application must be interrupted in order to update the display. In most cases this is preferable to other available alternatives in order to avoid inter-process calls which are time-consuming. Therefore, as displays and applications have become more sophisticated and complex, the amount of time consumed by display generation has increased. Nevertheless, display generation cannot generally be given priority over other tasks commanded by a running application.
For displayed objects which must move at high speed, the image of the object must be continually erased and redrawn. Compositing with other displayed objects may also be required. Therefore there will be a finite delay between the movement of a graphic input device and the display of a cursor image at a corresponding position on the display. This may cause overshoot of the cursor when it is manipulated. However, this possible overshoot is generally not a severe problem except when the processor is executing other commands which require a long sequence of operations, such as in controlling a printer to produce a document where character codes must be translated to a bit map for every page. In this latter case, the application cannot conveniently allow for numerous interrupts for redrawing the display. Therefore, cursor image generation and the acceptance of selection inputs from a graphic input device often is inconveniently delayed.
More recently, however, modern processors have allowed for concurrent processing of many tasks. This has permitted a general increase in the responsiveness of displays, even in multi-tasking environments. Interruption of acceptance of inputs from graphic input devices has also been reduced. Nevertheless, the complexity of display screens and the time required for rendering and compositing of displayed object images has increased the possibility of significant lag of displayed cursor position behind the position specified by a graphic input device. Moreover, the concurrent processing of tasks has created the possibility that a user may enter erroneous information with a graphic input device.
For example, assume that a display device is displaying a desktop, window or view (e.g. a window containing graphic tool menus or devices) containing a plurality of icons. As a cursor image is moved rapidly across the window or screen, it may strike such an icon and require compositing therewith, for example, if the cursor is translucent or transparent. Since compositing is a time consuming process, cursor movement may be delayed until compositing has been completed and the composited cursor image displayed and the lag between the displayed cursor position and the location specified by the graphic input device will increase in an unpredictable fashion. Other processing may also cause the same effect.
If the icon struck by the cursor is the one which the user wishes to select, the user may actuate the selector (e.g. mouse button) of the graphic input device while the cursor is displayed at the icon location. However, the location specified by the graphic input device is very likely to be a location which is different from that indicated by the cursor and selection is likely to fail. For other cursor functions such as drawing or dragging, erroneous data could be input. Therefore it can be readily appreciated that such discrepancies between the position specified by a graphic input device and a displayed cursor image can seriously degrade the ergonomics of both the data processing system and applications run thereon and present a serious inconvenience to a user.